<?php
declare (strict_types=1);

namespace app\command\tools;

use app\admin\service\exif\ExifService;
use app\command\BaseCommand;
use app\common\utils\MyLog;
use think\console\Input;
use think\console\input\Argument;
use think\console\Output;

/**
 * 使用ExifTool处理图片和视频的元数据
 */
class Exif extends BaseCommand
{
    protected function configure()
    {
        // 指令配置
        $operate_desc_text = "操作类别: \n";
        $operate_desc_text .= "    -- renameByExif: 根据图片或视频的Exif信息中的拍摄时间重命名文件 \n";
        $operate_desc_text .= "    -- setCreateDate: 修改图片或视频的拍摄时间 \n";
        $this->setName('Exif')
            ->addArgument('operate', Argument::REQUIRED, $operate_desc_text)
            ->setDescription('使用ExifTool处理图片和视频的元数据');
        $this->outputArgumentNotice();
    }

    protected function execute(Input $input, Output $output)
    {
        $dir = 'D:\DCIM';
        $operate = $input->getArgument('operate');
        switch ($operate) {
            case 'renameByExif':
                ExifService::renameFilesByExif($dir);
                P("第1阶段重命名完成");
                ExifService::renameFilesAgain($dir);
                P("第2阶段重命名完成");
                break;
            case 'setCreateDate':
                ExifService::setExifCreateDate($dir);
                break;
            default:
                PE("暂未定义 operate={$operate} 的业务逻辑");
        }

        $output->writeln("\n\n操作完成");
    }

}
